/*
 *  rota.cpp
 *  DARP_C++
 *
 *  Created by Daniel Leite on 05/06/11.
 *  Copyright 2011 __MyCompanyName__. All rights reserved.
 *
 */
#include <iostream>
#include <list>
#include <vector>
#include </Users/dlvcpe/Desenvolvimento/workspace/Mestrado/src/rota.h>//</home/daniel/workspace/Mestrado/src/rota.h>

using namespace std;
using std::vector;

//Rota::Rota{
/**private:
    vector<int> rota;
    vector<double> A;
    vector<double> B;
    vector<double> D;
    vector<double> W;
    vector<double> R;
    vector<double> T;
    vector<double> Q;
    vector<double> F;
    int tempoTotalDestaRota;
    int cargaMaximaDoVeiculo;
    int cacidadeDoVeiculo;
    int tempoMaximoDeViagemPermitido;
 */

//	double distanciaPercorridaDaRota = 0;
//    double tempoDoPercursoDaRota =0;
//    double quantidadeDeAtendimentos = 0;
//    double custo_Dist_Tempo_N_De_Atendimentos_Da_Rota = 0;

Rota::Rota(Rota const &r){
	this->rota = r.rota;
	this->A = r.A;
	this->B = r.B;
	this->D = r.D;
	this->W = r.W;
	this->R = r.R;
	this->T = r.T;
	this->Q = r.Q;
	this->F = r.F;

//	cout << ">> Copia <<"<<endl;
}

Rota::Rota(int dimensao) : //rota(dimensao, -1),
    				A(dimensao, 0),B (dimensao, 0),D (dimensao, 0 ), W(dimensao, 0),R(dimensao, 0),
    				T(dimensao, 0),Q(dimensao, 0),F(dimensao, 0)
//    A(dimensao, -1),B (dimensao, -1),D (dimensao, -1), W(dimensao, -1),R(dimensao, -1),
//        		                   T(dimensao, -1),Q(dimensao, -1),F(dimensao, -1)
{
//	cout<< "--------- EXECUTOU CONSTRUTOR ------------"<<endl;
	rota.reserve(dimensao);
	this->funcaoObjetivoRota = 0;

	//   	A.reserve(dimensao);
	//   	B.reserve(dimensao);
	//   	D.reserve(dimensao);
	//   	W.reserve(dimensao);
	//   	R.reserve(dimensao);
	//   	T.reserve(dimensao);
	//   	F.reserve(dimensao);
	//    this->rota = rota;
	//    this->A = A;
	//    this->B = B;
	//    this->D = D;
	//    this->W = W;
	//    this->R = R;
	//    this->T = T;
	//    this->Q = Q;
	//    this->F = F;
	//Inicializa os contadores
	this->distanciaPercorridaDaRota = 0;
	this->tempoDoPercursoDaRota =0;
	this->quantidadeDeAtendimentos = 0;
	this->custo_Dist_Tempo_N_De_Atendimentos_Da_Rota = 0;

}//TODO COLOCAR TUDO PUBLICO

Rota::~Rota(){
//	cout << ">>>>>>>>>>>>>>>>>    destructing Rota <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=-=-=-=-=-=-=-=-=" << endl;
//	delete Rota"")rota;
	//delete Rota;
}

//vector<double> Rota::getA(){
//	return this->A;
//}
//vector<double> Rota::getB(){
//	return this->B;
//}
//vector<double> Rota::getD(){
//	return this->D;
//}
//vector<double> Rota::getW(){
//	return this->W;
//}
//vector<double> Rota::getR(){
//	return this->R;
//}
//vector<double> Rota::getT(){
//	return this->T;
//}
//vector<double> Rota::getQ(){
//	return this->Q;
//}
//vector<double> Rota::getF(){
//	return this->F;
//}
//
//void Rota::setA(int Av){
//	this->A.push_back(Av);
//}
//void Rota::setB(int Bv){
//	this->B.push_back(Bv);
//}
//void Rota::setD(int Dv){
//	this->D.push_back(Dv);
//}
//void Rota::setW(int Wv){
//	this->W.push_back(Wv);
//}
//void Rota::setR(int Rv){
//	this->R.push_back(Rv);
//}
//void Rota::setT(int Tv){
//	this->T.push_back(Tv);
//}
//void Rota::setQ(int Qv){
//	this->Q.push_back(Qv);
//}
//void Rota::setF(int Fv){
//	this->F.push_back(Fv);
//}
//
//void Rota::setVectorA(vector<double> Av){
//	this->A = (Av);
//}
//void Rota::setVectorB(vector<double> Bv){
//	this->B = (Bv);
//}
//void Rota::setVectorD(vector<double> Dv){
//	this->D = (Dv);
//}
//void Rota::setVectorW(vector<double> Wv){
//	this->W = (Wv);
//}
//void Rota::setVectorR(vector<double> Rv){
//	this->R = (Rv);
//}
//void Rota::setVectorT(vector<double> Tv){
//	this->T = Tv;
//}
//void Rota::setVectorQ(vector<double> Qv){
//	this->Q = Qv;
//}
//void Rota::setVectorF(vector<double> Fv){
//	this->F = Fv;
//}
//vector<int> Rota::getRota(){
//	return this->rota;
//}
//void Rota::setRota(vector<int> rota){
//	this->rota= rota;
//}

//  double getDistanciaPercorridaDaRota();
//  double getTempoDoPercursoDaRota();
//  double getQuantidadeDeAtendimentos();
//  double getCusto_Dist_Tempo_N_De_Atendimentos_Da_Rota();
//
//  void setDistanciaPercorridaDaRota(double);
//  void setTempoDoPercursoDaRota(double);
//  void setQuantidadeDeAtendimentos(double);
//  void setCusto_Dist_Tempo_N_De_Atendimentos_Da_Rota(double);


double Rota::getDistanciaPercorridaDaRota(){
	return this->distanciaPercorridaDaRota;
}
double Rota::getTempoDoPercursoDaRota(){
	return this->tempoDoPercursoDaRota;
}
double Rota::getQuantidadeDeAtendimentos(){
	return rota.size()/2;
}
double Rota::getCusto_Dist_Tempo_N_De_Atendimentos_Da_Rota(){
	return this->custo_Dist_Tempo_N_De_Atendimentos_Da_Rota;
}

void Rota::setDistanciaPercorridaDaRota(double  distancia){
	this->distanciaPercorridaDaRota = distancia;
}
void Rota::setTempoDoPercursoDaRota(double  tempo){
	this->tempoDoPercursoDaRota = tempo;
}
//void Rota::setQuantidadeDeAtendimentos(double  atendimentos){
//	this->quantidadeDeAtendimentos = atendimentos;
//}
void Rota::setCusto_Dist_Tempo_N_De_Atendimentos_Da_Rota(double  custo){
	this->custo_Dist_Tempo_N_De_Atendimentos_Da_Rota = custo;
}


//double Rota::getTempoTotalDestaRota(){
//    return this->tempoTotalDestaRota;
//}
//
//double Rota::getCargaMaximaDoVeiculo(){
//    return this->cargaMaximaDoVeiculo;
//}
//
//double Rota::getCacidadeDoVeiculo(){
//    return this->cacidadeDoVeiculo;
//}
//
//double Rota::getTempoMaximoDeViagemPermitido(){
//    return this->tempoMaximoDeViagemPermitido;
//}


//
//void Rota::setTempoTotalDestaRota(int tempoTotal){
//    this->tempoTotalDestaRota = tempoTotal;
//}
//
//void Rota::setCargaMaximaDoVeiculo(int cargaMaxima){
//    this->cargaMaximaDoVeiculo = cargaMaximaDoVeiculo;
//}
//
//void Rota::setCacidadeDoVeiculo(int capacidadeVeiculos){
//    this->cacidadeDoVeiculo = capacidadeVeiculos;
//}
//
//void Rota::setTempoMaximoDeViagemPermitido(int tempoMaxViagem){
//    this->tempoMaximoDeViagemPermitido = tempoMaxViagem;
//}
